home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1035 / 1035.xpi / chrome / 1clickweather.jar / content / 1clickweather / js / common.js < prev    next >
Text File  |  2010-01-04  |  6KB  |  229 lines

  1. // ∩┐╜ 2005 The Weather Channel Interactive, Inc.  All Rights Reserved.
  2.  
  3. var GlobalTimerHash = {};
  4. var GlobalJsIncludeFiles = {};
  5.  
  6.  
  7. // this is a pretty darn cool function.  It can load up javascript using chrome:// urls
  8. function jsInclude(inputFile){
  9.    // this is a simple way to make sure we don't reload an already loaded js file
  10.    if(typeof(GlobalJsIncludeFiles[inputFile]) == "undefined"){
  11.       try{
  12.          var obj = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
  13.  
  14.          if(obj){
  15.             obj.loadSubScript(inputFile);
  16.             GlobalJsIncludeFiles[inputFile] = true;
  17.             return true;
  18.          }else{
  19.             return false;
  20.          }
  21.       }
  22.       catch(e){
  23.          alert("file: " + inputFile + "\n" + e.message);
  24.          return false;
  25.       }
  26.    }else{
  27.       return(false);
  28.    }
  29. }
  30.  
  31. jsInclude("chrome://1clickweather/content/js/utils/debug.js");
  32.  
  33. function openXUL(xulFile, key, val){
  34.    try{
  35.       var obj = new Object();
  36.       obj.data = {};
  37.       obj.data[key] = val;
  38.       window.openDialog('chrome://1clickweather/content/' + xulFile, '_blank', 'centerscreen, resizable, chrome, alwaysRaised, close', obj).focus();
  39.    }catch(e){
  40.       alert("Error opening window: " + xulFile + " " + e);
  41.    }
  42. }
  43.  
  44. function hashSize(myHash) {
  45.    var i = 0;
  46.    for(var nk in myHash) {
  47.       i++;
  48.    }
  49.    return(i);
  50. }
  51.  
  52. function getBrowserWindow(){
  53.   var windowManager = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService();
  54.   var windowManagerInterface = windowManager.QueryInterface(Components.interfaces.nsIWindowMediator);
  55.   var winHandle = windowManagerInterface.getMostRecentWindow("navigator:browser");
  56.   if (!winHandle)
  57.     winHandle = window.openDialog("chrome://browser/content/browser.xul", "_blank", "chrome,all,dialog=no", "about:blank", null, null);
  58.   return(winHandle);
  59. }
  60.  
  61. function openLinkInNewTab(aURL) {
  62.     var win = getBrowserWindow();
  63.     var browser = win.document.getElementById("content");
  64.     var tab = browser.addTab(aURL);
  65.     browser.selectedTab = tab;
  66.     win.content.focus();
  67. }
  68.  
  69. function ascending(a,b){
  70.    return a-b;
  71. }
  72.  
  73. function hash2array(h){
  74.    d = new Array();
  75.    for(var i in h){
  76.       d.push(i);
  77.    }
  78.    return(d.sort(ascending));
  79. }
  80.  
  81. function sleep(i){
  82.    setTimeout(setVar, i);
  83. }
  84.  
  85. function setVar(){
  86.     var x = 1;
  87. }
  88.  
  89. function now(){
  90.    var d = new Date();
  91.    return(d.toLocaleString());
  92. }
  93.  
  94.  
  95.  
  96. function isAfterTimeSwitch(timeStr){
  97.    var timeArray = timeStr.split(/ /);
  98.    var localTime = timeArray[0].split(/:/);
  99.  
  100.    
  101.    if(timeArray[1] == 'PM'){
  102. /*
  103.       var localTime = timeArray[0].split(/:/);
  104. */
  105.       if(((localTime[0] >= 2) && (localTime[0] < 12)) || (localTime[0] == 0)){
  106.          return(true);
  107.       }
  108.    }else{
  109.  
  110. /*       
  111.       var localTime = timeArray[0].split(/:/);
  112. */
  113.       if(localTime[0] == 12){
  114.          return(true);
  115.       }
  116.    }
  117.    return(false);
  118. }
  119.  
  120. function oTimer(f){
  121.    this.Timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); 
  122.    this.delay = 10; // default to 10 seconds
  123.    this.type = Components.interfaces.nsITimer.TYPE_ONE_SHOT;
  124.    this.note = '';
  125.  
  126.    if(f){
  127.       this.Func = f;
  128.    }else{
  129.       this.Func = null;
  130.    }
  131.  
  132.  
  133.    this.setDelay = function(interval){
  134.      this.delay = interval;
  135.    }
  136.  
  137.    this.setNote = function(n){
  138.      this.note = n;
  139.    }
  140.  
  141.    this.setType = function(type){
  142.       switch(type){
  143.          case 'once':
  144.             this.type = Components.interfaces.nsITimer.TYPE_ONE_SHOT;
  145.             break;
  146.  
  147.          case 'repeat':
  148.             this.type = Components.interfaces.nsITimer.TYPE_REPEATING_SLACK;
  149.             break;
  150.       }
  151.    }
  152.  
  153.    this.setFunction = function(f){
  154.       this.Func = f;
  155.    }
  156.  
  157.    this.Start = function(){
  158.       if(this.Func){
  159. //         debugLog("starting timer " + this.note);
  160.          this.Timer.initWithCallback(this, (1000 * this.delay), this.type);
  161.       }
  162.    }
  163.  
  164.    this.Stop = function(){
  165. //      debugLog("stopping timer " + this.note);
  166.       this.Timer.cancel();
  167.    }
  168.  
  169.    this.notify = function(aTimer){
  170.       debugLog("firing timer " + this.note);
  171.       this.Func();
  172.    }
  173. }
  174.  
  175. function interClickDay0(event) {    
  176.     var win = getBrowserWindow();
  177.     if(event.button==0 || event.button==1) {
  178.         openLinkInNewTab(win.document.getElementById("statusbar-container.Day0.box").getAttribute("uri"));
  179.     } else {
  180.         callSetup();
  181.     }
  182. }
  183.  
  184. function interClickDay1(event) {
  185.     var win = getBrowserWindow();
  186.     if(event.button==0 || event.button==1) {
  187.         openLinkInNewTab(win.document.getElementById("statusbar-container.Day1.box").getAttribute("uri"));
  188.     } else {
  189.         callSetup();
  190.     }
  191. }
  192.  
  193. function interClickDay2(event) {
  194.     var win = getBrowserWindow();
  195.     if(event.button==0 || event.button==1) {
  196.         openLinkInNewTab(win.document.getElementById("statusbar-container.Day2.box").getAttribute("uri"));
  197.     } else {
  198.         callSetup();
  199.     }
  200. }
  201.  
  202. function interClickDay3(event) {
  203.     var win = getBrowserWindow();
  204.     if(event.button==0 || event.button==1) {
  205.         openLinkInNewTab(win.document.getElementById("statusbar-container.Day3.box").getAttribute("uri"));
  206.     } else {
  207.         callSetup();
  208.     }
  209. }
  210.  
  211. function interClickDay4(event) {
  212.     var win = getBrowserWindow();
  213.     if(event.button==0 || event.button==1) {
  214.         openLinkInNewTab(win.document.getElementById("statusbar-container.Day4.box").getAttribute("uri"));
  215.     } else {
  216.         callSetup();
  217.     }
  218. }
  219.  
  220. function interClickCurrent(event) {
  221.     var win = getBrowserWindow();
  222.     if(event.button==0 || event.button==1) {
  223.         openLinkInNewTab(win.document.getElementById("statusbar-container.CurrentCond.box").getAttribute("uri"));
  224.     } else {
  225.         callSetup();
  226.     }
  227. }
  228.  
  229.